const fs = require('fs');
const path = require('path');

// 输入和输出文件路径
const svgDir = path.join(__dirname, '../static/svg');
const outputFile = path.join(__dirname, '../data/svg-paths.js');

// 读取SVG文件夹中的所有SVG文件
const svgFiles = fs.readdirSync(svgDir).filter(file => file.endsWith('.svg'));

// 存储所有SVG路径的数组
const svgPathsCollection = [];

// 处理每个SVG文件
svgFiles.forEach((file, fileIndex) => {
  const filePath = path.join(svgDir, file);
  const content = fs.readFileSync(filePath, 'utf8');
  const paths = [];
  
  console.log(`处理SVG文件: ${file}`);
  
  // 使用更精确的正则表达式匹配path标签的所有属性
  const pathRegex = /<path\s+([^>]*)>/g;
  let match;
  let partIndex = 0;
  
  while ((match = pathRegex.exec(content)) !== null) {
    const attributes = match[1];
    
    // 提取所有属性
    const dMatch = attributes.match(/d="([^"]*)"/);
    const transformMatch = attributes.match(/transform="([^"]*)"/);
    const fillMatch = attributes.match(/fill="([^"]*)"/);
    const strokeMatch = attributes.match(/stroke="([^"]*)"/);
    const strokeMiterlimitMatch = attributes.match(/stroke-miterlimit="([^"]*)"/);
    const strokeLinecapMatch = attributes.match(/stroke-linecap="([^"]*)"/);
    const strokeLinejoinMatch = attributes.match(/stroke-linejoin="([^"]*)"/);
    const strokeWidthMatch = attributes.match(/stroke-width="([^"]*)"/);
    
    const d = dMatch ? dMatch[1].replace(/\s+/g, ' ').trim() : '';
    const transform = transformMatch ? transformMatch[1] : '';
    const fill = fillMatch ? fillMatch[1] : 'white';
    const stroke = strokeMatch ? strokeMatch[1] : '#000';
    const strokeMiterlimit = strokeMiterlimitMatch ? strokeMiterlimitMatch[1] : '10';
    const strokeLinecap = strokeLinecapMatch ? strokeLinecapMatch[1] : 'round';
    const strokeLinejoin = strokeLinejoinMatch ? strokeLinejoinMatch[1] : 'round';
    const strokeWidth = strokeWidthMatch ? strokeWidthMatch[1] : '1';
    
    // 检查d属性是否为空
    if (!d) {
      console.warn(`警告: 在文件 ${file} 中发现空的d属性，路径索引: ${partIndex}`);
    }
    
    paths.push({
      d: d,
      transform: transform,
      dataPart: String(partIndex++),
      fill: fill,
      stroke: stroke,
      strokeMiterlimit: strokeMiterlimit,
      strokeLinecap: strokeLinecap,
      strokeLinejoin: strokeLinejoin,
      strokeWidth: strokeWidth
    });
  }
  
  console.log(`从文件 ${file} 中提取了 ${paths.length} 个路径`);
  
  // 检查是否有路径
  if (paths.length === 0) {
    console.error(`错误: 在文件 ${file} 中没有找到任何路径`);
  }
  
  svgPathsCollection.push(paths);
});

// 生成JavaScript代码
const jsContent = `// 此文件由脚本自动生成，请勿手动修改
export const svgPathsCollection = ${JSON.stringify(svgPathsCollection, null, 2)};
`;

// 确保输出目录存在
const outputDir = path.dirname(outputFile);
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir, { recursive: true });
}

// 写入文件
fs.writeFileSync(outputFile, jsContent);

console.log('SVG path collections has been generated and saved to:', outputFile); 